import server from '@/utils/http';
import { PaginationQuery } from '@/types/table';

enum Api {
    heartbeat = '/api/deviceInfo',
    model = '/api/deviceSpecs/page',
    priceTag = '/api/deviceInfo/page/priceTag',
    stateRecord = '/api/deviceInfo/page/stateRecord',
    queueRecord = '/api/deviceInfo/page/queueRecord',
    stockRecord = '/api/deviceInfo/stockRecord',
    pageStation = '/api/deviceInfo/page/station',
    station = '/api/deviceInfo/station',
    deviceStockpage = '/api/deviceStock/page',
    deviceTypeList = '/api/deviceType/list',
    deviceStock = '/api/deviceStock',
    deviceStockDetail = '/api/deviceStock/page/detail',
    deviceSpecsType = '/api/deviceSpecs/type',
}

/**
 * @description 获取设备心跳列表
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getHeartbeatData = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.heartbeat, query);
};

/**
 * @description 获取设备型号列表
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getModelData = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.model, query);
};

/**
 * @description 分页查询价签、LCD列表
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getPriceTagData = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.priceTag, query);
};

/**
 * @description 分页获取设备心跳记录
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getStateRecordData = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.stateRecord, query);
};

/**
 * @description 分页获取设备下发记录
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getQueueRecordData = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.queueRecord, query);
};

/**
 * @description 设备流通记录
 * @param

 * @return { content: 列表, totalElements： 总数 }
 */
export const getStockRecord = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.stockRecord + `/${query.deviceCode}`);
};

/**
 * @description 修改设备
 */
export const putheartbeat = (params: NormalObj): Promise<void> => {
    return server.Put(Api.heartbeat, params);
};
/**
 * @description 分页查询基站列表
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getPageStation = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.pageStation, query);
};

/**
 * @description 新增基站
 */
export const addStation = (params: NormalObj): Promise<void> => {
    return server.Post(Api.station + `?deviceCode=${params.deviceCode}`);
};

/**
 * @description 分页查询设备回收列表
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getdeviceStockpage = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.deviceStockpage, query);
};
/**
 * @description 分页查询设备类型列表
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getdeviceTypeList = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.deviceTypeList, query);
};

/**
 * @description 新增设备回收
 */
export const addDeviceStock = (params: NormalObj): Promise<void> => {
    return server.Post(Api.deviceStock, params);
};

/**
 * @description 分页查询设备回收明细
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getDeviceStockDetail = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.deviceStockDetail, query);
};

/**
 * @description 查询添加模板时的设备型号
 * @return {  列表 }
 */
export const getDeviceSpecsType = (): Promise<void> => {
    return server.Get(Api.deviceSpecsType);
};
